home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch3d < prev    next >
Encoding:
Internet Message Format  |  1989-09-11  |  46.8 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i019:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch3d
  5. Message-ID: <4538@tekred.CNA.TEK.COM>
  6. Date: 7 Sep 89 21:50:25 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1288
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 19
  13. Archive-name: NetHack3/Patch3d
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 4 (of 6)."
  23. # Contents:  patch03d
  24. # Wrapped by billr@saab on Thu Sep  7 14:39:04 1989
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'patch03d' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'patch03d'\"
  28. else
  29. echo shar: Extracting \"'patch03d'\" \(44912 characters\)
  30. sed "s/^X//" >'patch03d' <<'END_OF_FILE'
  31. X*** src/Old/mklev.c    Wed Sep  6 16:33:09 1989
  32. X--- src/mklev.c    Sat Aug 26 18:36:04 1989
  33. X***************
  34. X*** 790,796 ****
  35. X          for (tryct = rn1(1,3); tryct; tryct--) {
  36. X              x = somex(croom); y = somey(croom);
  37. X              if (goodpos(x,y,(struct permonst *)0))
  38. X!                 (void) mk_tt_statue(x, y);
  39. X          }
  40. X      }
  41. X  #endif
  42. X--- 790,796 ----
  43. X          for (tryct = rn1(1,3); tryct; tryct--) {
  44. X              x = somex(croom); y = somey(croom);
  45. X              if (goodpos(x,y,(struct permonst *)0))
  46. X!                 (void) mk_tt_object(STATUE, x, y);
  47. X          }
  48. X      }
  49. X  #endif
  50. X***************
  51. X*** 920,929 ****
  52. X  #ifdef MEDUSA
  53. X          if(!rn2(dlevel == medusa_level ? 1 : 20)) {
  54. X              if (!rn2(dlevel == medusa_level ? 2 : 50))
  55. X!                 (void) mk_tt_statue(somex(croom), somey(croom));
  56. X              else {
  57. X                  struct obj *otmp =
  58. X!                     mkstatue((struct permonst *)0,
  59. X                          somex(croom), somey(croom));
  60. X                  if (dlevel == medusa_level && otmp) 
  61. X                      otmp->spe = 0;
  62. X--- 920,930 ----
  63. X  #ifdef MEDUSA
  64. X          if(!rn2(dlevel == medusa_level ? 1 : 20)) {
  65. X              if (!rn2(dlevel == medusa_level ? 2 : 50))
  66. X!                 (void) mk_tt_object(STATUE,
  67. X!                         somex(croom), somey(croom));
  68. X              else {
  69. X                  struct obj *otmp =
  70. X!                     mkcorpstat(STATUE, (struct permonst *)0,
  71. X                          somex(croom), somey(croom));
  72. X                  if (dlevel == medusa_level && otmp) 
  73. X                      otmp->spe = 0;
  74. X***************
  75. X*** 932,938 ****
  76. X          }
  77. X  #else
  78. X          if(!rn2(20))
  79. X!                 (void) mkstatue((struct permonst *)0,
  80. X                          somex(croom), somey(croom));
  81. X  #endif
  82. X  
  83. X--- 933,939 ----
  84. X          }
  85. X  #else
  86. X          if(!rn2(20))
  87. X!                 (void) mkcorpstat(STATUE, (struct permonst *)0,
  88. X                          somex(croom), somey(croom));
  89. X  #endif
  90. X  
  91. X*** src/Old/mkobj.c    Wed Sep  6 16:33:57 1989
  92. X--- src/mkobj.c    Sat Sep  2 15:05:24 1989
  93. X***************
  94. X*** 81,91 ****
  95. X       * Yes, this is a horrible kludge...
  96. X       */
  97. X      otmp = mkobj(let,TRUE);
  98. X-     otmp->ox = x;
  99. X-     otmp->oy = y;
  100. X      otmp->nobj = fobj;
  101. X      fobj = otmp;
  102. X!     levl[x][y].omask = 1;
  103. X      mksx = mksy = 0;
  104. X      return(otmp);
  105. X  }
  106. X--- 81,89 ----
  107. X       * Yes, this is a horrible kludge...
  108. X       */
  109. X      otmp = mkobj(let,TRUE);
  110. X      otmp->nobj = fobj;
  111. X      fobj = otmp;
  112. X!     place_object(otmp, x, y);
  113. X      mksx = mksy = 0;
  114. X      return(otmp);
  115. X  }
  116. X***************
  117. X*** 98,107 ****
  118. X  
  119. X      mksx = x; mksy = y;
  120. X      otmp = mksobj(otyp,TRUE);
  121. X-     otmp->ox = x;
  122. X-     otmp->oy = y;
  123. X      otmp->nobj = fobj;
  124. X!     levl[x][y].omask = 1;
  125. X      mksx = mksy = 0;
  126. X      return((fobj = otmp));
  127. X  }
  128. X--- 96,103 ----
  129. X  
  130. X      mksx = x; mksy = y;
  131. X      otmp = mksobj(otyp,TRUE);
  132. X      otmp->nobj = fobj;
  133. X!     place_object(otmp, x, y);
  134. X      mksx = mksy = 0;
  135. X      return((fobj = otmp));
  136. X  }
  137. X***************
  138. X*** 244,250 ****
  139. X          break;
  140. X      case FOOD_SYM:
  141. X          if(otmp->otyp == CORPSE) {
  142. X!             /* overridden by mkcorpse_at() */
  143. X              do otmp->corpsenm = rndmonnum();
  144. X              while (mons[otmp->corpsenm].geno & G_NOCORPSE);
  145. X              break;
  146. X--- 240,246 ----
  147. X          break;
  148. X      case FOOD_SYM:
  149. X          if(otmp->otyp == CORPSE) {
  150. X!             /* overridden by mkcorpstat() */
  151. X              do otmp->corpsenm = rndmonnum();
  152. X              while (mons[otmp->corpsenm].geno & G_NOCORPSE);
  153. X              break;
  154. X***************
  155. X*** 306,314 ****
  156. X                      break;
  157. X          case BAG_OF_TRICKS:    otmp->spe = rnd(20);
  158. X                      break;
  159. X!         case FIGURINE:        otmp->corpsenm = rndmonnum();
  160. X                      blessorcurse(otmp, 4);
  161. X                      break;
  162. X  #ifdef MUSIC
  163. X          case MAGIC_FLUTE:
  164. X          case MAGIC_HARP:
  165. X--- 302,315 ----
  166. X                      break;
  167. X          case BAG_OF_TRICKS:    otmp->spe = rnd(20);
  168. X                      break;
  169. X!         case FIGURINE:    {    int tryct = 0;
  170. X!                     do
  171. X!                         otmp->corpsenm = rndmonnum();
  172. X!                     while(is_human(&mons[otmp->corpsenm])
  173. X!                         && tryct++ < 30);
  174. X                      blessorcurse(otmp, 4);
  175. X                      break;
  176. X+                 }
  177. X  #ifdef MUSIC
  178. X          case MAGIC_FLUTE:
  179. X          case MAGIC_HARP:
  180. X***************
  181. X*** 392,400 ****
  182. X              case STATUE:
  183. X              /* contains book? */
  184. X              otmp->spe = (rn2(dlevel/2 + 10) > 10);
  185. X!             /* overridden by mkstatue() */
  186. X              otmp->corpsenm = rndmonnum();
  187. X-             otmp->owt = mons[otmp->corpsenm].cwt;
  188. X          }
  189. X          break;
  190. X      default:
  191. X--- 393,400 ----
  192. X              case STATUE:
  193. X              /* contains book? */
  194. X              otmp->spe = (rn2(dlevel/2 + 10) > 10);
  195. X!             /* overridden by mkcorpstat() */
  196. X              otmp->corpsenm = rndmonnum();
  197. X          }
  198. X          break;
  199. X      default:
  200. X***************
  201. X*** 498,546 ****
  202. X  }
  203. X  
  204. X  struct obj *
  205. X! mkcorpse_at(ptr, x, y)
  206. X  register struct permonst *ptr;
  207. X! int    x, y;
  208. X  {
  209. X      register struct obj *otmp;
  210. X  
  211. X!     otmp = mksobj_at(CORPSE, x, y);
  212. X      if(otmp)  {
  213. X!         otmp->corpsenm = monsndx(ptr);
  214. X!         otmp->owt = ptr->cwt;
  215. X      }
  216. X      return(otmp);
  217. X  }
  218. X  
  219. X  struct obj *
  220. X! mk_tt_corpse(x, y)
  221. X  register int x, y;
  222. X  {
  223. X      register struct obj *otmp;
  224. X  
  225. X!     if((otmp = mksobj(CORPSE,FALSE))) {
  226. X!         otmp->ox = x;
  227. X!         otmp->oy = y;
  228. X!         if(otmp = tt_oname(otmp)) {
  229. X!             otmp->nobj = fobj;
  230. X!             fobj = otmp;
  231. X!             levl[x][y].omask = 1;
  232. X!         }
  233. X!     }
  234. X!     return(otmp);
  235. X! }
  236. X! 
  237. X! struct obj *
  238. X! mkstatue(ptr, x, y)
  239. X! register struct permonst *ptr;
  240. X! int x, y;
  241. X! {
  242. X!     register struct obj *otmp;
  243. X! 
  244. X!     if((otmp = mksobj_at(STATUE, x, y))) {
  245. X! 
  246. X!         if(ptr)    otmp->corpsenm = monsndx(ptr);
  247. X!         else    otmp->corpsenm = rndmonnum();
  248. X      }
  249. X      return(otmp);
  250. X  }
  251. X--- 498,532 ----
  252. X  }
  253. X  
  254. X  struct obj *
  255. X! mkcorpstat(objtype, ptr, x, y)
  256. X! int objtype;    /* CORPSE or STATUE */
  257. X  register struct permonst *ptr;
  258. X! int x, y;
  259. X  {
  260. X      register struct obj *otmp;
  261. X  
  262. X!     if(objtype != CORPSE && objtype != STATUE)
  263. X!         impossible("making corpstate type %d", objtype);
  264. X!     otmp = mksobj_at(objtype, x, y);
  265. X      if(otmp)  {
  266. X!         if(ptr)    otmp->corpsenm = monsndx(ptr);
  267. X!         else    otmp->corpsenm = rndmonnum();
  268. X!         otmp->owt = weight(otmp);
  269. X      }
  270. X      return(otmp);
  271. X  }
  272. X  
  273. X  struct obj *
  274. X! mk_tt_object(objtype, x, y)
  275. X! int objtype; /* CORPSE or STATUE */
  276. X  register int x, y;
  277. X  {
  278. X      register struct obj *otmp;
  279. X  
  280. X!     if(otmp = mksobj_at(objtype,x,y)) {
  281. X!         if((otmp = tt_oname(otmp)) && objtype == STATUE)
  282. X!             /* player statues never contain books */
  283. X!             otmp->spe = 0;
  284. X      }
  285. X      return(otmp);
  286. X  }
  287. X***************
  288. X*** 554,609 ****
  289. X  register int lth;
  290. X  {
  291. X      struct obj *otmp;
  292. X-     register struct obj *obj2;
  293. X- 
  294. X-     if (lth == 0) {
  295. X-         switch(objtype) {
  296. X-             case STATUE: return (mkstatue(ptr, x, y));
  297. X-             case CORPSE: return (mkcorpse_at(ptr, x, y));
  298. X-             default: impossible("making named type %d", objtype);
  299. X-                 return mksobj_at(objtype, x, y);
  300. X-         }
  301. X-     }
  302. X- 
  303. X-     if((otmp = mksobj(objtype,FALSE))) {
  304. X-         obj2 = newobj(lth);
  305. X-         *obj2 = *otmp;
  306. X-         obj2->corpsenm = monsndx(ptr);
  307. X-         obj2->owt = ptr->cwt;
  308. X-         obj2->onamelth = lth;
  309. X-         Strcpy (ONAME(obj2), nm);
  310. X-         free( (genericptr_t)otmp);
  311. X-         obj2->ox = x;
  312. X-         obj2->oy = y;
  313. X-         obj2->nobj = fobj;
  314. X-         fobj = obj2;
  315. X-         levl[x][y].omask = 1;
  316. X-         return(obj2);
  317. X-     } else  return((struct obj *)0);
  318. X- }
  319. X  
  320. X! #ifdef MEDUSA
  321. X! struct obj *
  322. X! mk_tt_statue(x, y)
  323. X! register int x, y;
  324. X! {
  325. X!     register struct obj *otmp;
  326. X! 
  327. X!     if((otmp = mksobj(STATUE,FALSE))) {
  328. X!         otmp->ox = x;
  329. X!         otmp->oy = y;
  330. X!         if(otmp = tt_oname(otmp)) {
  331. X!             otmp->nobj = fobj;
  332. X!             fobj = otmp;
  333. X!             levl[x][y].omask = 1;
  334. X!             otmp->spe = 0;
  335. X!             /* player statues never contain books */
  336. X!         }
  337. X      }
  338. X      return(otmp);
  339. X  }
  340. X- #endif
  341. X  
  342. X  boolean
  343. X  is_flammable(otmp)
  344. X  register struct obj *otmp;
  345. X--- 540,556 ----
  346. X  register int lth;
  347. X  {
  348. X      struct obj *otmp;
  349. X  
  350. X!     otmp = mkcorpstat(objtype,ptr,x,y);
  351. X!     if (lth > 0) {
  352. X!         /* Note: oname() is safe since otmp is first in chain */
  353. X!         otmp = oname(otmp, nm, FALSE);
  354. X!         fobj = otmp;
  355. X      }
  356. X      return(otmp);
  357. X  }
  358. X  
  359. X+ #ifdef STUPID_CPP
  360. X  boolean
  361. X  is_flammable(otmp)
  362. X  register struct obj *otmp;
  363. X***************
  364. X*** 620,629 ****
  365. X      return(objects[otmp->otyp].oc_material == METAL);
  366. X  }
  367. X  
  368. X  void
  369. X! set_omask(x, y)
  370. X! register xchar x, y;
  371. X  {
  372. X!     levl[x][y].gmask = (g_at(x, y) != (struct gold *)0);
  373. X!     levl[x][y].omask = (o_at(x, y) != (struct obj *)0);
  374. X  }
  375. X--- 567,626 ----
  376. X      return(objects[otmp->otyp].oc_material == METAL);
  377. X  }
  378. X  
  379. X+ boolean
  380. X+ is_corrodeable(otmp)
  381. X+ register struct obj *otmp;
  382. X+ {
  383. X+     return(objects[otmp->otyp].oc_material == COPPER);
  384. X+ }
  385. X+ #endif
  386. X+ 
  387. X+ /*
  388. X+  * These functions encapsulate operations on the omask bit.  Someday soon they
  389. X+  * will turn into list-manipulation functions.
  390. X+  */
  391. X+ boolean
  392. X+ OBJ_AT(x, y)
  393. X+ int x, y;
  394. X+ {
  395. X+     return levl[x][y].omask;
  396. X+ }
  397. X+ 
  398. X+ void
  399. X+ place_object(obj, x, y)
  400. X+ struct obj *obj;
  401. X+ register int x, y;
  402. X+ {
  403. X+     obj->ox = x;
  404. X+     obj->oy = y;
  405. X+     levl[x][y].omask = 1;
  406. X+ }
  407. X+ 
  408. X+ void
  409. X+ move_object(obj, x, y)
  410. X+ struct obj *obj;
  411. X+ register int x, y;
  412. X+ {
  413. X+     register int oldx = obj->ox, oldy = obj->oy;
  414. X+ 
  415. X+     obj->ox = x;
  416. X+     obj->oy = y;
  417. X+     levl[x][y].omask = 1;
  418. X+     levl[oldx][oldy].omask = (o_at(oldx, oldy) != (struct obj *)0);
  419. X+ }
  420. X+ 
  421. X  void
  422. X! remove_object(obj)
  423. X! struct obj *obj;
  424. X  {
  425. X!     register int oldx = obj->ox, oldy = obj->oy;
  426. X! 
  427. X! /*
  428. X!  * This cannot be used since it screws up unpobj().  It's only necessary so
  429. X!  * that o_at() doesn't mistakenly find the object, but this is called only
  430. X!  * in situations with the object already removed from the chain anyway.
  431. X!     obj->ox = 0;
  432. X!     obj->oy = 0;
  433. X!  */
  434. X!     levl[oldx][oldy].omask = (o_at(oldx, oldy) != (struct obj *)0);
  435. X  }
  436. X*** src/Old/objects.c    Wed Sep  6 15:52:35 1989
  437. X--- src/objects.c    Fri Sep  1 13:27:33 1989
  438. X***************
  439. X*** 19,25 ****
  440. X          ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0 },
  441. X  /* amulets ... - THE Amulet comes last because it is special */
  442. X  #define AMULET(name,desc,power,prob,weight)    { name, desc, NULL,\
  443. X!         0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, 100, 0, 0, 0 }
  444. X  
  445. X      AMULET("amulet of esp",       "circular",    TELEPAT,    190, 2),
  446. X      AMULET("amulet of life saving",   "spherical",    LIFESAVED,   90, 2),
  447. X--- 19,25 ----
  448. X          ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0 },
  449. X  /* amulets ... - THE Amulet comes last because it is special */
  450. X  #define AMULET(name,desc,power,prob,weight)    { name, desc, NULL,\
  451. X!         0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, 150, 0, 0, 0 }
  452. X  
  453. X      AMULET("amulet of esp",       "circular",    TELEPAT,    190, 2),
  454. X      AMULET("amulet of life saving",   "spherical",    LIFESAVED,   90, 2),
  455. X***************
  456. X*** 86,95 ****
  457. X      FOOD("tin",            75, 0, 1, METAL, 0),
  458. X  #undef FOOD
  459. X  
  460. X- /* weapons ... - ROCK come several at a time */
  461. X- /* weapons ... - (DART-1) are shot using idem+(BOW-ARROW) */
  462. X- /* weapons AXE, SWORD, KATANA, THSWORD are good for worm-cutting */
  463. X- /* weapons (PICK-)AXE, DAGGER, CRYSKNIFE are good for tin-opening */
  464. X  #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal) { name, app, \
  465. X      NULL, kn,mg,bi,metal, 0, WEAPON_SYM, prob, 0, wt, cost, sdam, ldam, 0 }
  466. X  #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop) { name, \
  467. X--- 86,91 ----
  468. X***************
  469. X*** 118,151 ****
  470. X             METAL, WP_CROSSBOW),
  471. X  
  472. X  WEAPON("dart",        NULL,        1, 1, 0, 60, 0,  2, 3, 2, METAL),
  473. X! WEAPON("shuriken",    "throwing star",0, 1, 0, 30, 0,  2, 8, 6, METAL),
  474. X! WEAPON("boomerang",    NULL,        1, 1, 0, 15, 3, 50, 9, 9, WOOD),
  475. X  
  476. X  /* spears */
  477. X  #ifdef TOLKIEN
  478. X! WEAPON("spear",     NULL,        1, 1, 0, 55, 3,  8, 6, 8, METAL),
  479. X! WEAPON("elven spear",    "runed spear",    0, 1, 0, 10, 3,  8, 7, 8, METAL),
  480. X! WEAPON("orcish spear",    "black spear",    0, 1, 0, 13, 3,  8, 5, 8, METAL),
  481. X! WEAPON("dwarvish spear","shiny spear",    0, 1, 0, 12, 3,  8, 8, 8, METAL),
  482. X  #else
  483. X! WEAPON("spear",     NULL,        1, 1, 0, 90, 3,  8, 6, 8, METAL),
  484. X  #endif
  485. X! WEAPON("javelin",    "throwing spear",0,1, 0, 10, 3,  8, 6, 6, METAL),
  486. X! WEAPON("trident",    NULL,        1, 0, 0,  8, 4,  6, 6, 4, METAL),
  487. X                          /* +1 small, +2d4 large */
  488. X! WEAPON("lance",     NULL,        1, 0, 0,  8, 4, 20, 6, 8, METAL),
  489. X  
  490. X  /* blades */
  491. X  #ifdef TOLKIEN
  492. X! WEAPON("dagger",    NULL,        1, 1, 0, 25, 2, 20, 4, 3, METAL),
  493. X! WEAPON("elven dagger",    "large runed knife", 0, 1, 0,  8, 2, 20, 5, 3, METAL),
  494. X! WEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 20, 3, 3, METAL),
  495. X  #else
  496. X! WEAPON("dagger",    NULL,        1, 1, 0, 43, 2, 20, 4, 3, METAL),
  497. X  #endif
  498. X! WEAPON("scalpel",    NULL,        1, 1, 0,  0, 1, 20, 4, 3, METAL),
  499. X! WEAPON("knife",     NULL,        1, 1, 0, 25, 2, 15, 3, 3, METAL),
  500. X! WEAPON("axe",        NULL,        1, 0, 0, 50, 3, 50, 6, 4, METAL),
  501. X  #ifdef WORM
  502. X  WEAPON("worm tooth",    NULL,        1, 0, 0,  0, 3,  2, 2, 2, METAL),
  503. X  WEAPON("crysknife",    NULL,        1, 0, 0,  0, 3,100,10,10, METAL),
  504. X--- 114,148 ----
  505. X             METAL, WP_CROSSBOW),
  506. X  
  507. X  WEAPON("dart",        NULL,        1, 1, 0, 60, 0,  2, 3, 2, METAL),
  508. X! WEAPON("shuriken",    "throwing star",0, 1, 0, 30, 0,  5, 8, 6, METAL),
  509. X! WEAPON("boomerang",    NULL,        1, 1, 0, 15, 3, 20, 9, 9, WOOD),
  510. X  
  511. X  /* spears */
  512. X  #ifdef TOLKIEN
  513. X! WEAPON("spear",     NULL,        1, 1, 0, 55, 3,  5, 6, 8, METAL),
  514. X! WEAPON("elven spear",    "runed spear",    0, 1, 0, 10, 3,  5, 7, 8, METAL),
  515. X! WEAPON("orcish spear",    "black spear",    0, 1, 0, 13, 3,  5, 5, 8, METAL),
  516. X! WEAPON("dwarvish spear","shiny spear",    0, 1, 0, 12, 3,  5, 8, 8, METAL),
  517. X  #else
  518. X! WEAPON("spear",     NULL,        1, 1, 0, 90, 3,  5, 6, 8, METAL),
  519. X  #endif
  520. X! WEAPON("javelin",    "throwing spear",0,1, 0, 10, 3,  5, 6, 6, METAL),
  521. X! WEAPON("trident",    NULL,        1, 0, 0,  8, 4, 15, 6, 4, METAL),
  522. X                          /* +1 small, +2d4 large */
  523. X! WEAPON("lance",     NULL,        1, 0, 0,  8, 4, 10, 6, 8, METAL),
  524. X  
  525. X  /* blades */
  526. X  #ifdef TOLKIEN
  527. X! WEAPON("dagger",    NULL,        1, 1, 0, 25, 2,  4, 4, 3, METAL),
  528. X! WEAPON("elven dagger",    "large runed knife", 0, 1, 0,  8, 2, 4, 5, 3, METAL),
  529. X! WEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 4, 3, 3, METAL),
  530. X  #else
  531. X! WEAPON("dagger",    NULL,        1, 1, 0, 43, 2,  4, 4, 3, METAL),
  532. X  #endif
  533. X! WEAPON("athame",    NULL,        1, 1, 0,  0, 2,  4, 4, 3, METAL),
  534. X! WEAPON("scalpel",    NULL,        1, 1, 0,  0, 1,  4, 4, 3, METAL),
  535. X! WEAPON("knife",     NULL,        1, 1, 0, 25, 2,  4, 3, 3, METAL),
  536. X! WEAPON("axe",        NULL,        1, 0, 0, 50, 3,  8, 6, 4, METAL),
  537. X  #ifdef WORM
  538. X  WEAPON("worm tooth",    NULL,        1, 0, 0,  0, 3,  2, 2, 2, METAL),
  539. X  WEAPON("crysknife",    NULL,        1, 0, 0,  0, 3,100,10,10, METAL),
  540. X***************
  541. X*** 153,242 ****
  542. X  
  543. X  /* swords */
  544. X  #ifdef TOLKIEN
  545. X! WEAPON("short sword",        NULL,    1, 0, 0,  6, 3, 80, 6, 8, METAL),
  546. X  WEAPON("elven short sword",    "short runed sword",
  547. X!                     0, 0, 0,  2, 3, 80, 8, 8, METAL),
  548. X  WEAPON("orcish short sword",    "short black sword",
  549. X!                     0, 0, 0,  3, 3, 80, 5, 8, METAL),
  550. X  WEAPON("dwarvish short sword",    "short shiny sword",
  551. X!                     0, 0, 0,  2, 3, 80, 7, 8, METAL),
  552. X  #else
  553. X! WEAPON("short sword",        NULL,    1, 0, 0, 13, 3, 80, 6, 8, METAL),
  554. X  #endif
  555. X! WEAPON("scimitar", "curved sword",    0, 0, 0,  6, 4, 80, 8, 8, METAL),
  556. X  #ifdef TOLKIEN
  557. X! WEAPON("broadsword", "wide sword",    0, 0, 0,  8, 4, 80, 4, 6, METAL),
  558. X                          /* +d4 small, +1 large */
  559. X  WEAPON("elven broadsword",    "wide runed sword",
  560. X!                     0, 0, 0,  4, 4, 80, 6, 6, METAL),
  561. X                          /* +d4 small, +1 large */
  562. X  #else
  563. X! WEAPON("broadsword", "wide sword",    0, 0, 0, 12, 4, 80, 4, 6, METAL),
  564. X                          /* +d4 small, +1 large */
  565. X  #endif
  566. X! WEAPON("long sword",        NULL,    1, 0, 0, 60, 4, 80, 8, 12, METAL),
  567. X  #ifdef TOLKIEN
  568. X! WEAPON("two-handed sword",    NULL,    1, 0, 1, 25, 5, 80,12,    6, METAL),
  569. X                          /* +2d6 large */
  570. X  WEAPON("dwarvish mattock",    "huge shiny sword",
  571. X!                     0, 0, 1, 15, 6, 80,12,    8, METAL),
  572. X                          /* +2d6 large */
  573. X  #else
  574. X! WEAPON("two-handed sword",    NULL,    1, 0, 1, 40, 5, 80,12,    6, METAL),
  575. X                          /* +2d6 large */
  576. X  #endif
  577. X  WEAPON("katana", "samurai sword",    0, 0, 0,  6, 4,100,10, 12, METAL),
  578. X  
  579. X  /* blunt */
  580. X! WEAPON("mace",        NULL,        1, 0, 0, 55, 4, 150, 6, 6, METAL),
  581. X                          /* +1 small */
  582. X! WEAPON("morning star",    NULL,        1, 0, 0, 12, 4, 120, 4, 6, METAL),
  583. X                          /* +d4 small, +1 large */
  584. X! WEAPON("club",        NULL,        1, 0, 0, 10, 3, 100, 6, 3, WOOD),
  585. X  #ifdef KOPS
  586. X! WEAPON("rubber hose",    NULL,        1, 0, 0,  0, 2, 100, 6, 3, 0),
  587. X  #endif
  588. X! WEAPON("quarterstaff",    "staff",    0, 0, 1, 10, 3, 150, 6, 6, WOOD),
  589. X! 
  590. X  /* two-piece */
  591. X! WEAPON("aklys", "thonged club",     0, 0, 0,  8, 3, 30, 6, 3, METAL),
  592. X! WEAPON("flail",     NULL,        1, 0, 0, 40, 3, 30, 6, 4, METAL),
  593. X                          /* +1 small, +1d4 large */
  594. X  /* whip */
  595. X! WEAPON("bullwhip",    NULL,        1, 0, 0,  5, 2, 20, 2, 1, 0),
  596. X  
  597. X  /* polearms */
  598. X! WEAPON("bardiche", "large poleaxe",    0, 0, 1,  8, 3, 70, 4, 4, METAL),
  599. X!                         /* +1d4 small, +2d4 large */
  600. X! WEAPON("bec de corbin","beaked poleaxe",0, 0, 1,  8, 3, 16, 8, 6, METAL),
  601. X! WEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3, 60, 4,10, METAL),
  602. X!                         /* +1d4 small */
  603. X! WEAPON("fauchard",    "sickle",    0, 0, 1, 11, 3, 30, 6, 8, METAL),
  604. X! WEAPON("glaive",    "pike",     0, 0, 1, 15, 3, 60, 6,10, METAL),
  605. X! WEAPON("guisarme",    "pruning hook", 0, 0, 1, 11, 3, 50, 4, 8, METAL),
  606. X!                         /* +1d4 small */
  607. X! WEAPON("halberd",    "long poleaxe", 0, 0, 1, 16, 3, 90,10, 6, METAL),
  608. X!                         /* +1d6 large */
  609. X! WEAPON("lucern hammer", "hammerhead polearm", 0, 0, 1, 10, 3, 70, 4, 6, METAL),
  610. X!                         /* +1d4 small */
  611. X! WEAPON("partisan", "vulgar polearm",    0, 0, 1, 10, 3,100, 6, 6, METAL),
  612. X                          /* +1 large */
  613. X! WEAPON("ranseur", "hilted polearm",    0, 0, 1, 10, 3, 40, 4, 4, METAL),
  614. X                          /* +d4 both */
  615. X! WEAPON("spetum", "forked polearm",    0, 0, 1, 10, 3, 30, 6, 6, METAL),
  616. X                          /* +1 small, +d6 large */
  617. X! WEAPON("voulge", "poleaxe",        0, 0, 1,  8, 3, 20, 4, 4, METAL),
  618. X                          /* +d4 both */
  619. X  /* bows */
  620. X  #ifdef TOLKIEN
  621. X! BOW("bow",      NULL,     1, 0, 24, 3, 120, 4, 6, 0, WP_BOW),
  622. X! BOW("elven bow",  "runed bow",    0, 0, 12, 3, 120, 5, 6, 0, WP_BOW),
  623. X! BOW("orcish bow", "black bow",    0, 0, 12, 3, 120, 3, 6, 0, WP_BOW),
  624. X  #else
  625. X! BOW("bow",      NULL,     1, 0, 48, 3, 120, 4, 6, 0, WP_BOW),
  626. X  #endif
  627. X! BOW("sling",       NULL,            1, 0, 40, 2,  20, 6, 6, 0, WP_SLING),
  628. X! BOW("crossbow",      NULL,        1, 0, 45, 3,  40, 4, 6, 0, WP_CROSSBOW),
  629. X  #undef WEAPON
  630. X  #undef PROJECTILE
  631. X  #undef BOW
  632. X--- 150,245 ----
  633. X  
  634. X  /* swords */
  635. X  #ifdef TOLKIEN
  636. X! WEAPON("short sword",        NULL,    1, 0, 0,  6, 3, 10, 6, 8, METAL),
  637. X  WEAPON("elven short sword",    "short runed sword",
  638. X!                     0, 0, 0,  2, 3, 10, 8, 8, METAL),
  639. X  WEAPON("orcish short sword",    "short black sword",
  640. X!                     0, 0, 0,  3, 3, 10, 5, 8, METAL),
  641. X  WEAPON("dwarvish short sword",    "short shiny sword",
  642. X!                     0, 0, 0,  2, 3, 10, 7, 8, METAL),
  643. X  #else
  644. X! WEAPON("short sword",        NULL,    1, 0, 0, 13, 3, 10, 6, 8, METAL),
  645. X  #endif
  646. X! WEAPON("scimitar", "curved sword",    0, 0, 0,  6, 4, 15, 8, 8, METAL),
  647. X  #ifdef TOLKIEN
  648. X! WEAPON("broadsword", "wide sword",    0, 0, 0,  8, 4, 10, 4, 6, METAL),
  649. X                          /* +d4 small, +1 large */
  650. X  WEAPON("elven broadsword",    "wide runed sword",
  651. X!                     0, 0, 0,  4, 4, 10, 6, 6, METAL),
  652. X                          /* +d4 small, +1 large */
  653. X  #else
  654. X! WEAPON("broadsword", "wide sword",    0, 0, 0, 12, 4, 10, 4, 6, METAL),
  655. X                          /* +d4 small, +1 large */
  656. X  #endif
  657. X! WEAPON("long sword",        NULL,    1, 0, 0, 60, 4, 15, 8, 12, METAL),
  658. X  #ifdef TOLKIEN
  659. X! WEAPON("two-handed sword",    NULL,    1, 0, 1, 25, 5, 50,12,    6, METAL),
  660. X                          /* +2d6 large */
  661. X  WEAPON("dwarvish mattock",    "huge shiny sword",
  662. X!                     0, 0, 1, 15, 6, 50,12,    8, METAL),
  663. X                          /* +2d6 large */
  664. X  #else
  665. X! WEAPON("two-handed sword",    NULL,    1, 0, 1, 40, 5, 50,12,    6, METAL),
  666. X                          /* +2d6 large */
  667. X  #endif
  668. X  WEAPON("katana", "samurai sword",    0, 0, 0,  6, 4,100,10, 12, METAL),
  669. X  
  670. X  /* blunt */
  671. X! WEAPON("mace",        NULL,        1, 0, 0, 40, 4,  8, 6, 6, METAL),
  672. X                          /* +1 small */
  673. X! WEAPON("morning star",    NULL,        1, 0, 0, 12, 4, 10, 4, 6, METAL),
  674. X                          /* +d4 small, +1 large */
  675. X! WEAPON("war hammer",    NULL,        1, 0, 0, 15, 3,  5, 4, 4, METAL),
  676. X!                         /* +1 small */
  677. X! WEAPON("club",        NULL,        1, 0, 0, 10, 3,  4, 6, 3, WOOD),
  678. X  #ifdef KOPS
  679. X! WEAPON("rubber hose",    NULL,        1, 0, 0,  0, 2,  4, 6, 3, 0),
  680. X  #endif
  681. X! WEAPON("quarterstaff",    "staff",    0, 0, 1, 10, 3,  8, 6, 6, WOOD),
  682. X  /* two-piece */
  683. X! WEAPON("aklys",     "thonged club", 0, 0, 0,  8, 3,  4, 6, 3, METAL),
  684. X! WEAPON("flail",     NULL,        1, 0, 0, 40, 3,  4, 6, 4, METAL),
  685. X                          /* +1 small, +1d4 large */
  686. X  /* whip */
  687. X! WEAPON("bullwhip",    NULL,        1, 0, 0,  5, 2,  4, 2, 1, 0),
  688. X  
  689. X  /* polearms */
  690. X! /* spear-type */
  691. X! WEAPON("partisan", "vulgar polearm",    0, 0, 1, 10, 3, 10, 6, 6, METAL),
  692. X                          /* +1 large */
  693. X! WEAPON("ranseur", "hilted polearm",    0, 0, 1, 10, 3,  6, 4, 4, METAL),
  694. X                          /* +d4 both */
  695. X! WEAPON("spetum", "forked polearm",    0, 0, 1, 10, 3,  5, 6, 6, METAL),
  696. X                          /* +1 small, +d6 large */
  697. X! WEAPON("glaive", "single-edged polearm", 0, 0, 1, 15, 3, 6, 6,10, METAL),
  698. X! /* axe-type */
  699. X! WEAPON("halberd", "angled poleaxe",    0, 0, 1, 16, 3, 10,10, 6, METAL),
  700. X!                         /* +1d6 large */
  701. X! WEAPON("bardiche", "long poleaxe",    0, 0, 1,  8, 3,  7, 4, 4, METAL),
  702. X!                         /* +1d4 small, +2d4 large */
  703. X! WEAPON("voulge", "pole cleaver",    0, 0, 1,  8, 3,  5, 4, 4, METAL),
  704. X                          /* +d4 both */
  705. X+ /* curved/hooked */
  706. X+ WEAPON("fauchard",    "pole sickle",    0, 0, 1, 11, 3,  5, 6, 8, METAL),
  707. X+ WEAPON("guisarme",    "pruning hook", 0, 0, 1, 11, 3,  5, 4, 8, METAL),
  708. X+                         /* +1d4 small */
  709. X+ WEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3,  7, 4,10, METAL),
  710. X+                         /* +1d4 small */
  711. X+ /* other */
  712. X+ WEAPON("lucern hammer", "pronged polearm", 0, 0, 1, 10, 3,  7, 4, 6, METAL),
  713. X+                         /* +1d4 small */
  714. X+ WEAPON("bec de corbin","beaked polearm",0, 0, 1,  8, 3,  8, 8, 6, METAL),
  715. X+ 
  716. X  /* bows */
  717. X  #ifdef TOLKIEN
  718. X! BOW("bow",      NULL,     1, 0, 24, 3, 120, 30, 6, 0, WP_BOW),
  719. X! BOW("elven bow",  "runed bow",    0, 0, 12, 3, 120, 35, 6, 0, WP_BOW),
  720. X! BOW("orcish bow", "black bow",    0, 0, 12, 3, 120, 25, 6, 0, WP_BOW),
  721. X  #else
  722. X! BOW("bow",      NULL,     1, 0, 48, 3, 120, 30, 6, 0, WP_BOW),
  723. X  #endif
  724. X! BOW("sling",       NULL,            1, 0, 40, 2,  20,  4, 6, 0, WP_SLING),
  725. X! BOW("crossbow",      NULL,        1, 0, 45, 3,  40, 35, 6, 0, WP_CROSSBOW),
  726. X  #undef WEAPON
  727. X  #undef PROJECTILE
  728. X  #undef BOW
  729. X***************
  730. X*** 255,261 ****
  731. X      TOOL("blindfold",    NULL,        1, 0, 105,  2,    20, 0),
  732. X  #endif
  733. X      TOOL("tinning kit",    NULL,        1, 0,  15, 10,    30, METAL),
  734. X!     TOOL("lock pick",    NULL,        1, 0,  55,  2,    20, METAL),
  735. X      TOOL("credit card",    NULL,        1, 0,    5,  1,    10, 0),
  736. X  #ifdef WALKIES
  737. X      TOOL("key",        NULL,        1, 0, 100,  1,    10, METAL),
  738. X--- 258,264 ----
  739. X      TOOL("blindfold",    NULL,        1, 0, 105,  2,    20, 0),
  740. X  #endif
  741. X      TOOL("tinning kit",    NULL,        1, 0,  15, 10,    30, METAL),
  742. X!     TOOL("lock pick",    NULL,        1, 0,  55,  2,    10, METAL),
  743. X      TOOL("credit card",    NULL,        1, 0,    5,  1,    10, 0),
  744. X  #ifdef WALKIES
  745. X      TOOL("key",        NULL,        1, 0, 100,  1,    10, METAL),
  746. X***************
  747. X*** 265,271 ****
  748. X      TOOL("skeleton key",    "key",        0, 0,  60,  1,    10, METAL),
  749. X      TOOL("expensive camera", NULL,        1, 0,    5,  3, 200, 0),
  750. X      TOOL("magic marker",    NULL,        1, 1,  15,  1,    50, 0),
  751. X!     TOOL("stethoscope",    NULL,        1, 0,  15,  2,    80, 0),
  752. X      TOOL("tin opener",    NULL,        1, 0,  25,  1,    30, METAL),
  753. X  #ifdef WALKIES
  754. X      TOOL("lamp",        NULL,        1, 1,  90, 10,    50, 0),
  755. X--- 268,274 ----
  756. X      TOOL("skeleton key",    "key",        0, 0,  60,  1,    10, METAL),
  757. X      TOOL("expensive camera", NULL,        1, 0,    5,  3, 200, 0),
  758. X      TOOL("magic marker",    NULL,        1, 1,  15,  1,    50, 0),
  759. X!     TOOL("stethoscope",    NULL,        1, 0,  15,  2,    75, 0),
  760. X      TOOL("tin opener",    NULL,        1, 0,  25,  1,    30, METAL),
  761. X  #ifdef WALKIES
  762. X      TOOL("lamp",        NULL,        1, 1,  90, 10,    50, 0),
  763. X***************
  764. X*** 274,286 ****
  765. X  #endif
  766. X      TOOL("magic lamp",    "lamp",     0, 1,  20, 10,    50, 0),
  767. X      TOOL("crystal ball",    NULL,        1, 1,  35, 15,    60, GLASS),
  768. X!     TOOL("figurine",    NULL,        1, 0,  35,  5,    80, MINERAL),
  769. X!     TOOL("ice box",     NULL,        1, 0,    5, 40, 400, 0),
  770. X!     TOOL("large box",    NULL,        1, 0,  40, 40, 400, WOOD),
  771. X!     TOOL("chest",        NULL,        1, 0,  35, 40, 500, WOOD),
  772. X!     TOOL("sack",        "bag",        0, 0,  40,  3, 200, 0),
  773. X!     TOOL("bag of holding",    "bag",        0, 0,  20,  3, 250, 0),
  774. X!     TOOL("bag of tricks",    "bag",        0, 1,  20,  3, 250, 0),
  775. X  #ifndef MUSIC
  776. X      TOOL("whistle",     NULL,        1, 0, 120,  2,    10, METAL),
  777. X      TOOL("magic whistle",    "whistle",    0, 0,  50,  2,    10, METAL),
  778. X--- 277,289 ----
  779. X  #endif
  780. X      TOOL("magic lamp",    "lamp",     0, 1,  20, 10,    50, 0),
  781. X      TOOL("crystal ball",    NULL,        1, 1,  35, 15,    60, GLASS),
  782. X!     TOOL("figurine",    NULL,        1, 0,  35,  5,  80, MINERAL),
  783. X!     TOOL("ice box",     NULL,        1, 0,    5, 40,  30, 0),
  784. X!     TOOL("large box",    NULL,        1, 0,  40, 40,  20, WOOD),
  785. X!     TOOL("chest",        NULL,        1, 0,  35, 40,  20, WOOD),
  786. X!     TOOL("sack",        "bag",        0, 0,  40,  3,  20, 0),
  787. X!     TOOL("bag of holding",    "bag",        0, 0,  20,  3, 100, 0),
  788. X!     TOOL("bag of tricks",    "bag",        0, 1,  20,  3, 100, 0),
  789. X  #ifndef MUSIC
  790. X      TOOL("whistle",     NULL,        1, 0, 120,  2,    10, METAL),
  791. X      TOOL("magic whistle",    "whistle",    0, 0,  50,  2,    10, METAL),
  792. X***************
  793. X*** 323,419 ****
  794. X      name, desc, NULL, kn,0,blk,metal, power, ARMOR_SYM, prob,\
  795. X      delay, weight, cost, ac, can, 0 }
  796. X  #ifdef TOLKIEN
  797. X! ARMOR("elven leather helm", "leather hat", 0, 0, 0,  6, 1, 2,  10, 9, 0, 0),
  798. X  ARMOR("orcish helm", "black cap",       0, 0, 0,  6, 1, 3,  10, 9, 0, METAL),
  799. X! ARMOR("dwarvish iron helm", "hard hat",    0, 0, 0,  6, 1, 3,  10, 8, 0, METAL),
  800. X  #else
  801. X  ARMOR("orcish helm", "black cap",       0, 0, 0, 18, 1, 3,  10, 9, 0, METAL),
  802. X  #endif
  803. X! ARMOR("fedora", NULL,               1, 0, 0,  0, 1, 1,  10, 9, 0, 0),
  804. X  ARMOR("helmet", "rusty pot",           0, 0, 0, 12, 1, 2,  10, 9, 0, METAL),
  805. X! ARMOR("helm of brilliance", "plumed hat",       0, 0, 0,  6, 1, 2,  15, 9, 0, METAL),
  806. X  ARMOR("helm of opposite alignment", "crested helmet",
  807. X!                        0, 0, 0,  6, 1, 2,  15, 9, 0, METAL),
  808. X  ARMOR("helm of telepathy", "visored helmet",
  809. X!                 0, 0, TELEPAT, 2, 1, 2, 15, 9, 0, METAL),
  810. X  
  811. X! /* non-metal and (METAL | 1) armors do not rust */
  812. X  ARMOR("dragon scale mail", NULL,  1, 1, 0,  0, 5, 5,1000, 1, 0, 0),
  813. X! ARMOR("plate mail", NULL,      1, 1, 0, 44, 5, 9, 400, 3, 2, METAL),
  814. X! ARMOR("crystal plate mail", NULL, 1, 1, 0, 10, 5, 9, 820, 3, 2, 0),
  815. X  #ifdef SHIRT
  816. X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 25, 5, 9, 600, 4, 0, (METAL | 1)),
  817. X  #else
  818. X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 35, 5, 9, 600, 4, 0, (METAL | 1)),
  819. X  #endif
  820. X  ARMOR("splint mail", NULL,    1, 1, 0, 66, 5, 8,  80, 4, 1, METAL),
  821. X  ARMOR("banded mail", NULL,    1, 1, 0, 76, 5, 8,  90, 4, 0, METAL),
  822. X  #ifdef TOLKIEN
  823. X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 10, 1, 2, 160, 4, 3, (METAL | 1)),
  824. X! ARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 160, 5, 3, (METAL | 1)),
  825. X  ARMOR("chain mail", NULL,    1, 0, 0, 76, 5, 6,  75, 5, 1, METAL),
  826. X  ARMOR("orcish chain mail", "black chain mail",
  827. X                      0, 0, 0, 20, 5, 6,  75, 5, 1, METAL),
  828. X  #else
  829. X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 25, 1, 2, 160, 4, 3, (METAL | 1)),
  830. X  ARMOR("chain mail", NULL,    1, 0, 0, 96, 5, 6,  75, 5, 1, METAL),
  831. X  #endif
  832. X! ARMOR("scale mail", NULL,    1, 0, 0, 76, 5, 5,  45, 6, 0, METAL),
  833. X  ARMOR("studded leather armor", NULL,
  834. X!                     1, 0, 0, 76, 3, 3,  15, 7, 1, 0),
  835. X  #ifdef TOLKIEN
  836. X! ARMOR("ring mail", NULL,    1, 0, 0, 76, 5, 4,  30, 7, 0, METAL),
  837. X  ARMOR("orcish ring mail", "black ring mail",
  838. X!                     0, 0, 0, 20, 5, 5,  75, 8, 1, METAL),
  839. X  #else
  840. X! ARMOR("ring mail", NULL,    1, 0, 0, 96, 5, 4,  30, 7, 0, METAL),
  841. X  #endif
  842. X  ARMOR("leather armor", NULL,    1, 0, 0, 97, 3, 2,   5, 8, 0, 0),
  843. X  
  844. X  /*  'cope' is not a spelling mistake... leave it be */
  845. X  ARMOR("mummy wrapping", NULL,
  846. X!                 1, 0, 0,         0, 0, 2,  5, 10, 2, 0),
  847. X  #ifdef TOLKIEN
  848. X  ARMOR("elven cloak", "ornamental cope",
  849. X!                 0, 0, STEALTH,        12, 0, 2, 35,  9, 3, 0),
  850. X  ARMOR("orcish cloak", "black mantelet",
  851. X!                 0, 0, 0,        12, 0, 2, 35, 10, 3, 0),
  852. X  ARMOR("dwarvish cloak", "colorful hooded cloak",
  853. X!                 0, 0, 0,        12, 0, 2, 35, 10, 3, 0),
  854. X  #else
  855. X  ARMOR("elven cloak", "ornamental cope",
  856. X!                 0, 0, STEALTH,        36, 0, 2, 35,  9, 3, 0),
  857. X  #endif
  858. X  ARMOR("cloak of protection", "tattered cape",
  859. X!                 0, 0, PROTECTION,   12, 0, 2, 15,  7, 3, 0),
  860. X  ARMOR("cloak of invisibility", "opera hood",
  861. X!                 0, 0, INVIS,        12, 0, 2, 35,  9, 3, 0),
  862. X  ARMOR("cloak of magic resistance", "faded pall",
  863. X!                 0, 0, ANTIMAGIC,     2, 0, 2, 25,  9, 3, 0),
  864. X  ARMOR("cloak of displacement", "piece of cloth",
  865. X!                 0, 0, DISPLACED,    12, 0, 2, 15,  9, 3, 0),
  866. X  
  867. X  #ifdef TOLKIEN
  868. X  ARMOR("small shield", NULL,
  869. X!                 1, 0, 0,       6, 0, 2, 10,  9, 0, METAL),
  870. X  ARMOR("elven shield", "blue and green shield",
  871. X!                 0, 0, 0,       2, 0, 2, 15,  8, 0, METAL),
  872. X  ARMOR("Uruk-hai shield", "white-handed shield",
  873. X!                 0, 0, 0,       2, 0, 4, 10,  9, 0, METAL),
  874. X  ARMOR("orcish shield", "red-eyed shield",
  875. X!                 0, 0, 0,       2, 0, 3, 10,  9, 0, METAL),
  876. X  ARMOR("large shield", NULL,
  877. X!                 1, 1, 0,       7, 0, 4, 15,  8, 0, METAL),
  878. X  ARMOR("dwarvish roundshield", "large round shield",
  879. X!                 0, 0, 0,       4, 0, 4, 15,  8, 0, METAL),
  880. X  #else
  881. X  ARMOR("small shield", NULL,
  882. X!                 1, 0, 0,      12, 0, 2, 10,  9, 0, METAL),
  883. X  ARMOR("large shield", NULL,
  884. X!                 1, 1, 0,      11, 0, 4, 15,  8, 0, METAL),
  885. X  #endif
  886. X  ARMOR("shield of reflection", "polished silver shield",
  887. X!                 0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, (METAL | 1)),
  888. X  
  889. X  #ifdef SHIRT
  890. X  ARMOR("Hawaiian shirt", NULL,    1, 0, 0, 10, 0, 2, 5, 10, 0, 0),
  891. X--- 326,423 ----
  892. X      name, desc, NULL, kn,0,blk,metal, power, ARMOR_SYM, prob,\
  893. X      delay, weight, cost, ac, can, 0 }
  894. X  #ifdef TOLKIEN
  895. X! ARMOR("elven leather helm", "leather hat", 0, 0, 0,  6, 1, 2,   8, 9, 0, 0),
  896. X  ARMOR("orcish helm", "black cap",       0, 0, 0,  6, 1, 3,  10, 9, 0, METAL),
  897. X! ARMOR("dwarvish iron helm", "hard hat",    0, 0, 0,  6, 1, 3,  20, 8, 0, METAL),
  898. X  #else
  899. X  ARMOR("orcish helm", "black cap",       0, 0, 0, 18, 1, 3,  10, 9, 0, METAL),
  900. X  #endif
  901. X! ARMOR("fedora", NULL,               1, 0, 0,  0, 1, 1,   8, 9, 0, 0),
  902. X  ARMOR("helmet", "rusty pot",           0, 0, 0, 12, 1, 2,  10, 9, 0, METAL),
  903. X! ARMOR("helm of brilliance", "plumed hat",
  904. X!                        0, 0, 0,  6, 1, 2,  50, 9, 0, METAL),
  905. X  ARMOR("helm of opposite alignment", "crested helmet",
  906. X!                        0, 0, 0,  6, 1, 2,  50, 9, 0, METAL),
  907. X  ARMOR("helm of telepathy", "visored helmet",
  908. X!                        0, 0, TELEPAT, 2, 1, 2, 50, 9, 0, METAL),
  909. X  
  910. X! /* non-METAL armors do not rust */
  911. X  ARMOR("dragon scale mail", NULL,  1, 1, 0,  0, 5, 5,1000, 1, 0, 0),
  912. X! ARMOR("plate mail", NULL,      1, 1, 0, 44, 5, 9, 600, 3, 2, METAL),
  913. X! ARMOR("crystal plate mail", NULL, 1, 1, 0, 10, 5, 9, 820, 3, 2, GLASS),
  914. X  #ifdef SHIRT
  915. X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER),
  916. X  #else
  917. X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 35, 5, 9, 400, 4, 0, COPPER),
  918. X  #endif
  919. X  ARMOR("splint mail", NULL,    1, 1, 0, 66, 5, 8,  80, 4, 1, METAL),
  920. X  ARMOR("banded mail", NULL,    1, 1, 0, 76, 5, 8,  90, 4, 0, METAL),
  921. X  #ifdef TOLKIEN
  922. X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 10, 1, 2, 240, 4, 3, MITHRIL),
  923. X! ARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 240, 5, 3, MITHRIL),
  924. X  ARMOR("chain mail", NULL,    1, 0, 0, 76, 5, 6,  75, 5, 1, METAL),
  925. X  ARMOR("orcish chain mail", "black chain mail",
  926. X                      0, 0, 0, 20, 5, 6,  75, 5, 1, METAL),
  927. X  #else
  928. X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 25, 1, 2, 240, 4, 3, MITHRIL),
  929. X  ARMOR("chain mail", NULL,    1, 0, 0, 96, 5, 6,  75, 5, 1, METAL),
  930. X  #endif
  931. X! ARMOR("scale mail", NULL,    1, 0, 0, 76, 5, 5, 120, 6, 0, METAL),
  932. X  ARMOR("studded leather armor", NULL,
  933. X!                     1, 0, 0, 76, 3, 3,  20, 7, 1, 0),
  934. X  #ifdef TOLKIEN
  935. X! ARMOR("ring mail", NULL,    1, 0, 0, 76, 5, 4, 100, 7, 0, METAL),
  936. X  ARMOR("orcish ring mail", "black ring mail",
  937. X!                     0, 0, 0, 20, 5, 5,  80, 8, 1, METAL),
  938. X  #else
  939. X! ARMOR("ring mail", NULL,    1, 0, 0, 96, 5, 4, 100, 7, 0, METAL),
  940. X  #endif
  941. X  ARMOR("leather armor", NULL,    1, 0, 0, 97, 3, 2,   5, 8, 0, 0),
  942. X  
  943. X  /*  'cope' is not a spelling mistake... leave it be */
  944. X  ARMOR("mummy wrapping", NULL,
  945. X!                 1, 0, 0,         0, 0, 2,  2, 10, 2, 0),
  946. X  #ifdef TOLKIEN
  947. X  ARMOR("elven cloak", "ornamental cope",
  948. X!                 0, 0, STEALTH,        12, 0, 2, 60,  9, 3, 0),
  949. X  ARMOR("orcish cloak", "black mantelet",
  950. X!                 0, 0, 0,        12, 0, 2, 40, 10, 3, 0),
  951. X  ARMOR("dwarvish cloak", "colorful hooded cloak",
  952. X!                 0, 0, 0,        12, 0, 2, 50, 10, 3, 0),
  953. X  #else
  954. X  ARMOR("elven cloak", "ornamental cope",
  955. X!                 0, 0, STEALTH,        36, 0, 2, 60,  9, 3, 0),
  956. X  #endif
  957. X  ARMOR("cloak of protection", "tattered cape",
  958. X!                 0, 0, PROTECTION,   12, 0, 2, 50,  7, 3, 0),
  959. X  ARMOR("cloak of invisibility", "opera hood",
  960. X!                 0, 0, INVIS,        12, 0, 2, 60,  9, 3, 0),
  961. X  ARMOR("cloak of magic resistance", "faded pall",
  962. X!                 0, 0, ANTIMAGIC,     2, 0, 2, 60,  9, 3, 0),
  963. X  ARMOR("cloak of displacement", "piece of cloth",
  964. X!                 0, 0, DISPLACED,    12, 0, 2, 50,  9, 3, 0),
  965. X  
  966. X  #ifdef TOLKIEN
  967. X  ARMOR("small shield", NULL,
  968. X!                 1, 0, 0,       6, 0, 2,  3,  9, 0, METAL),
  969. X  ARMOR("elven shield", "blue and green shield",
  970. X!                 0, 0, 0,       2, 0, 2,  3,  8, 0, METAL),
  971. X  ARMOR("Uruk-hai shield", "white-handed shield",
  972. X!                 0, 0, 0,       2, 0, 4,  3,  9, 0, METAL),
  973. X  ARMOR("orcish shield", "red-eyed shield",
  974. X!                 0, 0, 0,       2, 0, 3,  3,  9, 0, METAL),
  975. X  ARMOR("large shield", NULL,
  976. X!                 1, 1, 0,       7, 0, 4,  7,  8, 0, METAL),
  977. X  ARMOR("dwarvish roundshield", "large round shield",
  978. X!                 0, 0, 0,       4, 0, 4,  7,  8, 0, METAL),
  979. X  #else
  980. X  ARMOR("small shield", NULL,
  981. X!                 1, 0, 0,      12, 0, 2,  3,  9, 0, METAL),
  982. X  ARMOR("large shield", NULL,
  983. X!                 1, 1, 0,      11, 0, 4,  7,  8, 0, METAL),
  984. X  #endif
  985. X  ARMOR("shield of reflection", "polished silver shield",
  986. X!                 0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, SILVER),
  987. X  
  988. X  #ifdef SHIRT
  989. X  ARMOR("Hawaiian shirt", NULL,    1, 0, 0, 10, 0, 2, 5, 10, 0, 0),
  990. X***************
  991. X*** 420,482 ****
  992. X  #endif
  993. X  
  994. X  ARMOR("leather gloves", "old gloves",
  995. X!                 0, 0, 0,       16, 1, 2, 10, 9, 0, 0),
  996. X  ARMOR("gauntlets of fumbling", "padded gloves",
  997. X!                 0, 0, FUMBLING,    8, 1, 2, 10, 9, 0, 0),
  998. X  ARMOR("gauntlets of power", "riding gloves",
  999. X!                 0, 0, 0,       8, 1, 2, 10, 9, 0, METAL),
  1000. X  ARMOR("gauntlets of dexterity", "fencing gloves",
  1001. X!                 0, 0, 0,       8, 1, 2, 10, 9, 0, 0),
  1002. X  
  1003. X  ARMOR("low boots", "walking shoes",
  1004. X!                 0, 0, 0,       25, 2, 3, 20, 9, 0, 0),
  1005. X  ARMOR("iron shoes", "hard shoes",
  1006. X!                 0, 0, 0,        7, 2, 5, 20, 8, 0, METAL),
  1007. X  ARMOR("high boots", "jackboots",
  1008. X!                 0, 0, 0,       15, 2, 4, 50, 8, 0, 0),
  1009. X  ARMOR("speed boots", "combat boots",
  1010. X!                 0, 0, FAST,       12, 2, 4, 30, 9, 0, 0),
  1011. X  ARMOR("water walking boots", "jungle boots",
  1012. X!                 0, 0, WWALKING,    12, 2, 4, 30, 9, 0, 0),
  1013. X  ARMOR("jumping boots", "hiking boots",
  1014. X!                 0, 0, JUMPING,       12, 2, 4, 30, 9, 0, 0),
  1015. X  ARMOR("elven boots", "mud boots",
  1016. X                  0, 0, STEALTH,       12, 2, 3,  8, 9, 0, 0),
  1017. X  ARMOR("fumble boots", "riding boots",
  1018. X!                 0, 0, FUMBLING,    12, 2, 4, 15, 9, 0, 0),
  1019. X  ARMOR("levitation boots", "snow boots",
  1020. X!                 0, 0, LEVITATION,  12, 2, 4, 15, 9, 0, 0),
  1021. X  #undef ARMOR
  1022. X  
  1023. X! #define POTION(name,color,power,prob)    { name, color, NULL, 0,1,0,0, power,\
  1024. X!         POTION_SYM, prob, 0, 2, 100, 0, 0, 0 }
  1025. X  
  1026. X  #ifdef SPELLS
  1027. X!     POTION("fruit juice",        "smoky",    0,    45),
  1028. X!     POTION("booze",         "bubbly",    0,    45),
  1029. X!     POTION("gain energy",        "ebony",     0,    45),
  1030. X  #else
  1031. X!     POTION("fruit juice",        "smoky",    0,    70),
  1032. X!     POTION("booze",         "bubbly",    0,    65),
  1033. X! #endif
  1034. X!     POTION("gain ability",        "swirly",    0,    45),
  1035. X!     POTION("restore ability",    "pink",        0,    45),
  1036. X!     POTION("sickness",        "ruby",        SICK,    45),
  1037. X!     POTION("confusion",        "orange",    CONFUSION, 45),
  1038. X!     POTION("blindness",        "yellow",    BLINDED, 45),
  1039. X!     POTION("paralysis",        "emerald",     0,    45),
  1040. X!     POTION("speed",         "dark green",     FAST,    45),
  1041. X!     POTION("levitation",        "cyan",        LEVITATION, 45),
  1042. X!     POTION("hallucination",     "brilliant blue", HALLUC, 45),
  1043. X!     POTION("invisibility",        "sky blue",    INVIS,    45),
  1044. X!     POTION("see invisible",     "magenta",    SEE_INVIS, 45),
  1045. X!     POTION("healing",        "purple",     0,    65),
  1046. X!     POTION("extra healing",     "purple-red",    0,    50),
  1047. X!     POTION("gain level",        "puce",    0,    20),
  1048. X!     POTION("enlightenment",        "brown",    0,    20),
  1049. X!     POTION("monster detection",    "white",    0,    45),
  1050. X!     POTION("object detection",    "glowing",    0,    45),
  1051. X!     POTION("water",         "clear",    0,    125),
  1052. X  #undef POTION
  1053. X  
  1054. X  #define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0, 0,\
  1055. X--- 424,486 ----
  1056. X  #endif
  1057. X  
  1058. X  ARMOR("leather gloves", "old gloves",
  1059. X!                 0, 0, 0,       16, 1, 2, 8, 9, 0, 0),
  1060. X  ARMOR("gauntlets of fumbling", "padded gloves",
  1061. X!                 0, 0, FUMBLING,    8, 1, 2, 50, 9, 0, 0),
  1062. X  ARMOR("gauntlets of power", "riding gloves",
  1063. X!                 0, 0, 0,       8, 1, 2, 50, 9, 0, METAL),
  1064. X  ARMOR("gauntlets of dexterity", "fencing gloves",
  1065. X!                 0, 0, 0,       8, 1, 2, 50, 9, 0, 0),
  1066. X  
  1067. X  ARMOR("low boots", "walking shoes",
  1068. X!                 0, 0, 0,       25, 2, 3,  8, 9, 0, 0),
  1069. X  ARMOR("iron shoes", "hard shoes",
  1070. X!                 0, 0, 0,        7, 2, 5, 16, 8, 0, METAL),
  1071. X  ARMOR("high boots", "jackboots",
  1072. X!                 0, 0, 0,       15, 2, 4, 12, 8, 0, 0),
  1073. X  ARMOR("speed boots", "combat boots",
  1074. X!                 0, 0, FAST,       12, 2, 4, 50, 9, 0, 0),
  1075. X  ARMOR("water walking boots", "jungle boots",
  1076. X!                 0, 0, WWALKING,    12, 2, 4, 50, 9, 0, 0),
  1077. X  ARMOR("jumping boots", "hiking boots",
  1078. X!                 0, 0, JUMPING,       12, 2, 4, 50, 9, 0, 0),
  1079. X  ARMOR("elven boots", "mud boots",
  1080. X                  0, 0, STEALTH,       12, 2, 3,  8, 9, 0, 0),
  1081. X  ARMOR("fumble boots", "riding boots",
  1082. X!                 0, 0, FUMBLING,    12, 2, 4, 30, 9, 0, 0),
  1083. X  ARMOR("levitation boots", "snow boots",
  1084. X!                 0, 0, LEVITATION,  12, 2, 4, 30, 9, 0, 0),
  1085. X  #undef ARMOR
  1086. X  
  1087. X! #define POTION(name,color,power,prob,cost)    { name, color, NULL, \
  1088. X!         0,1,0,0, power, POTION_SYM, prob, 0, 2, cost, 0, 0, 0 }
  1089. X  
  1090. X  #ifdef SPELLS
  1091. X!     POTION("fruit juice",        "smoky",    0,    45, 50),
  1092. X!     POTION("booze",         "bubbly",    0,    45, 50),
  1093. X!     POTION("gain energy",        "ebony",     0,    45, 150),
  1094. X  #else
  1095. X!     POTION("fruit juice",        "smoky",    0,    70, 50),
  1096. X!     POTION("booze",         "bubbly",    0,    65, 50),
  1097. X! #endif
  1098. X!     POTION("gain ability",        "swirly",    0,    45, 300),
  1099. X!     POTION("restore ability",    "pink",        0,    45, 100),
  1100. X!     POTION("sickness",        "ruby",        SICK,    45, 50),
  1101. X!     POTION("confusion",        "orange",    CONFUSION, 45, 100),
  1102. X!     POTION("blindness",        "yellow",    BLINDED, 45, 150),
  1103. X!     POTION("paralysis",        "emerald",     0,    45, 300),
  1104. X!     POTION("speed",         "dark green",     FAST,    45, 200),
  1105. X!     POTION("levitation",        "cyan",        LEVITATION, 45, 200),
  1106. X!     POTION("hallucination",     "brilliant blue", HALLUC, 45, 100),
  1107. X!     POTION("invisibility",        "sky blue",    INVIS,    45, 150),
  1108. X!     POTION("see invisible",     "magenta",    SEE_INVIS, 45, 50),
  1109. X!     POTION("healing",        "purple",     0,    65, 100),
  1110. X!     POTION("extra healing",     "purple-red",    0,    50, 100),
  1111. X!     POTION("gain level",        "puce",        0,    20, 300),
  1112. X!     POTION("enlightenment",        "brown",    0,    20, 200),
  1113. X!     POTION("monster detection",    "white",    0,    45, 150),
  1114. X!     POTION("object detection",    "glowing",    0,    45, 150),
  1115. X!     POTION("water",         "clear",    0,    125, 100),
  1116. X  #undef POTION
  1117. X  
  1118. X  #define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0, 0,\
  1119. X***************
  1120. X*** 488,499 ****
  1121. X      SCROLL("destroy armor",     "JUYED AWK YACC",   45, 100),
  1122. X      SCROLL("confuse monster",    "NR 9",         53, 100),
  1123. X      SCROLL("scare monster",     "XIXAXA XOXAXA XUXAXA", 35, 100),
  1124. X!     SCROLL("blank paper",        "READ ME",        28,  80),
  1125. X      SCROLL("remove curse",        "PRATYAVAYAH",        65,  80),
  1126. X      SCROLL("enchant weapon",    "DAIYEN FOOELS",    85,  60),
  1127. X!     SCROLL("create monster",    "LEP GEX VEN ZEA",  45, 100),
  1128. X      SCROLL("taming",        "PRIRUTSENIE",        15, 200),
  1129. X!     SCROLL("genocide",        "ELBIB YLOH",        15, 200),
  1130. X      SCROLL("light",         "VERR YED HORRE",   95,  50),
  1131. X      SCROLL("teleportation",     "VENZAR BORGAVVE",  55, 100),
  1132. X      SCROLL("gold detection",    "THARR",        33, 100),
  1133. X--- 492,503 ----
  1134. X      SCROLL("destroy armor",     "JUYED AWK YACC",   45, 100),
  1135. X      SCROLL("confuse monster",    "NR 9",         53, 100),
  1136. X      SCROLL("scare monster",     "XIXAXA XOXAXA XUXAXA", 35, 100),
  1137. X!     SCROLL("blank paper",        "READ ME",        28,  60),
  1138. X      SCROLL("remove curse",        "PRATYAVAYAH",        65,  80),
  1139. X      SCROLL("enchant weapon",    "DAIYEN FOOELS",    85,  60),
  1140. X!     SCROLL("create monster",    "LEP GEX VEN ZEA",  45, 200),
  1141. X      SCROLL("taming",        "PRIRUTSENIE",        15, 200),
  1142. X!     SCROLL("genocide",        "ELBIB YLOH",        15, 300),
  1143. X      SCROLL("light",         "VERR YED HORRE",   95,  50),
  1144. X      SCROLL("teleportation",     "VENZAR BORGAVVE",  55, 100),
  1145. X      SCROLL("gold detection",    "THARR",        33, 100),
  1146. X***************
  1147. X*** 500,509 ****
  1148. X      SCROLL("food detection",    "YUM YUM",        25, 100),
  1149. X      SCROLL("identify",        "KERNOD WEL",        185, 20),
  1150. X      SCROLL("magic mapping",     "ELAM EBOW",        45, 100),
  1151. X!     SCROLL("amnesia",        "DUAM XNAHT",        35, 100),
  1152. X      SCROLL("fire",            "ANDOVA BEGARIN",   48, 100),
  1153. X!     SCROLL("punishment",        "VE FORBRYDERNE",   15, 200),
  1154. X!     SCROLL("charging",        "HACKEM MUCHE",     15, 200),
  1155. X      SCROLL(NULL,            "VELOX NEB",         0, 100),
  1156. X      SCROLL(NULL,            "FOOBIE BLETCH",     0, 100),
  1157. X      SCROLL(NULL,            "TEMOV",         0, 100),
  1158. X--- 504,513 ----
  1159. X      SCROLL("food detection",    "YUM YUM",        25, 100),
  1160. X      SCROLL("identify",        "KERNOD WEL",        185, 20),
  1161. X      SCROLL("magic mapping",     "ELAM EBOW",        45, 100),
  1162. X!     SCROLL("amnesia",        "DUAM XNAHT",        35, 200),
  1163. X      SCROLL("fire",            "ANDOVA BEGARIN",   48, 100),
  1164. X!     SCROLL("punishment",        "VE FORBRYDERNE",   15, 300),
  1165. X!     SCROLL("charging",        "HACKEM MUCHE",     15, 300),
  1166. X      SCROLL(NULL,            "VELOX NEB",         0, 100),
  1167. X      SCROLL(NULL,            "FOOBIE BLETCH",     0, 100),
  1168. X      SCROLL(NULL,            "TEMOV",         0, 100),
  1169. X***************
  1170. X*** 521,535 ****
  1171. X      WAND("nothing",     "ebony",    25, 100, IMMEDIATE, WOOD),
  1172. X      WAND("make invisible",    "marble",    45, 150, IMMEDIATE, MINERAL),
  1173. X      WAND("slow monster",    "tin",        55, 150, IMMEDIATE, METAL),
  1174. X!     WAND("speed monster",    "brass",    55, 150, IMMEDIATE, METAL),
  1175. X!     WAND("undead turning",    "copper",    55, 150, IMMEDIATE, METAL),
  1176. X!     WAND("polymorph",    "silver",    45, 200, IMMEDIATE, METAL),
  1177. X!     WAND("cancellation",    "platinum",    45, 200, IMMEDIATE, METAL),
  1178. X      WAND("teleportation",    "iridium",     45, 200, IMMEDIATE, METAL),
  1179. X  #ifdef PROBING
  1180. X-     WAND("probing",     "uranium",    30, 150, IMMEDIATE, METAL),
  1181. X      WAND("opening",     "zinc",        25, 150, IMMEDIATE, METAL),
  1182. X      WAND("locking",     "aluminum",    25, 150, IMMEDIATE, METAL),
  1183. X  #else
  1184. X      WAND("opening",     "zinc",        40, 150, IMMEDIATE, METAL),
  1185. X      WAND("locking",     "aluminum",    40, 150, IMMEDIATE, METAL),
  1186. X--- 525,539 ----
  1187. X      WAND("nothing",     "ebony",    25, 100, IMMEDIATE, WOOD),
  1188. X      WAND("make invisible",    "marble",    45, 150, IMMEDIATE, MINERAL),
  1189. X      WAND("slow monster",    "tin",        55, 150, IMMEDIATE, METAL),
  1190. X!     WAND("speed monster",    "brass",    55, 150, IMMEDIATE, COPPER),
  1191. X!     WAND("undead turning",    "copper",    55, 150, IMMEDIATE, COPPER),
  1192. X!     WAND("polymorph",    "silver",    45, 200, IMMEDIATE, SILVER),
  1193. X!     WAND("cancellation",    "platinum",    45, 200, IMMEDIATE, PLATINUM),
  1194. X      WAND("teleportation",    "iridium",     45, 200, IMMEDIATE, METAL),
  1195. X  #ifdef PROBING
  1196. X      WAND("opening",     "zinc",        25, 150, IMMEDIATE, METAL),
  1197. X      WAND("locking",     "aluminum",    25, 150, IMMEDIATE, METAL),
  1198. X+     WAND("probing",     "uranium",    30, 150, IMMEDIATE, METAL),
  1199. X  #else
  1200. X      WAND("opening",     "zinc",        40, 150, IMMEDIATE, METAL),
  1201. X      WAND("locking",     "aluminum",    40, 150, IMMEDIATE, METAL),
  1202. X***************
  1203. X*** 594,628 ****
  1204. X  #undef SPELL
  1205. X  #endif /* SPELLS /**/
  1206. X  
  1207. X! #define RING(name,stone,power,spec,metal) { name, stone, NULL, 0,0,spec,metal,\
  1208. X!         power, RING_SYM, 0, 0, 1, 100, spec, 0, 0 }
  1209. X  
  1210. X!     RING("adornment",    "wooden",    ADORNED,    1, WOOD),
  1211. X!     RING("gain strength",    "granite",    0,        1, MINERAL),
  1212. X!     RING("increase damage", "hematite",    0,        1, MINERAL),
  1213. X!     RING("protection",    "black onyx",    PROTECTION,    1, MINERAL),
  1214. X!     RING("regeneration",    "moonstone",    REGENERATION,    0, MINERAL),
  1215. X!     RING("searching",    "tiger eye",    SEARCHING,    0, MINERAL),
  1216. X!     RING("stealth",     "jade",        STEALTH,    0, MINERAL),
  1217. X!     RING("levitation",    "agate",    LEVITATION,    0, MINERAL),
  1218. X!     RING("hunger",        "topaz",    HUNGER,     0, MINERAL),
  1219. X!     RING("aggravate monster", "sapphire",    AGGRAVATE_MONSTER, 0, METAL),
  1220. X!     RING("conflict",    "ruby",     CONFLICT,    0, METAL),
  1221. X!     RING("warning",     "diamond",     WARNING,    0, METAL),
  1222. X!     RING("poison resistance", "pearl",    POISON_RES,    0, METAL),
  1223. X!     RING("fire resistance", "iron",        FIRE_RES,    0, METAL),
  1224. X!     RING("cold resistance", "brass",    COLD_RES,    0, METAL),
  1225. X!     RING("shock resistance", "copper",    SHOCK_RES,    0, METAL),
  1226. X!     RING("teleportation",    "silver",    TELEPORT,    0, METAL),
  1227. X!     RING("teleport control", "gold",    TELEPORT_CONTROL, 0, METAL),
  1228. X  #ifdef POLYSELF
  1229. X!     RING("polymorph",    "ivory",    POLYMORPH,    0, 0),
  1230. X!     RING("polymorph control","blackened",    POLYMORPH_CONTROL, 0, METAL),
  1231. X  #endif
  1232. X!     RING("invisibility",    "wire",    INVIS,        0, METAL),
  1233. X!     RING("see invisible",    "engagement",    SEE_INVIS,    0, METAL),
  1234. X      RING("protection from shape changers", "shining",
  1235. X!                     PROT_FROM_SHAPE_CHANGERS, 0, METAL),
  1236. X  #undef RING
  1237. X  
  1238. X  /* gems ************************************************************/
  1239. X--- 598,632 ----
  1240. X  #undef SPELL
  1241. X  #endif /* SPELLS /**/
  1242. X  
  1243. X! #define RING(name,stone,power,cost,spec,metal) { name, stone, NULL, \
  1244. X!         0,0,spec,metal, power, RING_SYM, 0, 0, 1, cost, spec, 0, 0 }
  1245. X  
  1246. X!     RING("adornment",    "wooden",    ADORNED,    100, 1, WOOD),
  1247. X!     RING("gain strength",    "granite",    0,        150, 1, MINERAL),
  1248. X!     RING("increase damage", "hematite",    0,        150, 1, MINERAL),
  1249. X!     RING("protection",    "black onyx",    PROTECTION,    100, 1, MINERAL),
  1250. X!     RING("regeneration",    "moonstone",    REGENERATION,    200, 0, MINERAL),
  1251. X!     RING("searching",    "tiger eye",    SEARCHING,    200, 0, MINERAL),
  1252. X!     RING("stealth",     "jade",        STEALTH,    100, 0, MINERAL),
  1253. X!     RING("levitation",    "agate",    LEVITATION,    200, 0, MINERAL),
  1254. X!     RING("hunger",        "topaz",    HUNGER,     100, 0, MINERAL),
  1255. X!     RING("aggravate monster", "sapphire",    AGGRAVATE_MONSTER, 150, 0, METAL),
  1256. X!     RING("conflict",    "ruby",     CONFLICT,    300, 0, METAL),
  1257. X!     RING("warning",     "diamond",     WARNING,    100, 0, METAL),
  1258. X!     RING("poison resistance", "pearl",    POISON_RES,    150, 0, METAL),
  1259. X!     RING("fire resistance", "iron",        FIRE_RES,    200, 0, METAL),
  1260. X!     RING("cold resistance", "brass",    COLD_RES,    150, 0, COPPER),
  1261. X!     RING("shock resistance", "copper",    SHOCK_RES,    150, 0, COPPER),
  1262. X!     RING("teleportation",    "silver",    TELEPORT,    200, 0, SILVER),
  1263. X!     RING("teleport control", "gold",    TELEPORT_CONTROL, 300, 0, GOLD),
  1264. X  #ifdef POLYSELF
  1265. X!     RING("polymorph",    "ivory",    POLYMORPH,    300, 0, 0),
  1266. X!     RING("polymorph control","blackened",    POLYMORPH_CONTROL, 300, 0, METAL),
  1267. X  #endif
  1268. X!     RING("invisibility",    "wire",        INVIS,        150, 0, METAL),
  1269. X!     RING("see invisible",    "engagement",    SEE_INVIS,    150, 0, METAL),
  1270. X      RING("protection from shape changers", "shining",
  1271. X!                     PROT_FROM_SHAPE_CHANGERS, 100, 0, METAL),
  1272. X  #undef RING
  1273. X  
  1274. X  /* gems ************************************************************/
  1275. X
  1276. END_OF_FILE
  1277. if test 44912 -ne `wc -c <'patch03d'`; then
  1278.     echo shar: \"'patch03d'\" unpacked with wrong size!
  1279. fi
  1280. # end of 'patch03d'
  1281. fi
  1282. echo shar: End of archive 4 \(of 6\).
  1283. cp /dev/null ark4isdone
  1284. MISSING=""
  1285. for I in 1 2 3 4 5 6 ; do
  1286.     if test ! -f ark${I}isdone ; then
  1287.     MISSING="${MISSING} ${I}"
  1288.     fi
  1289. done
  1290. if test "${MISSING}" = "" ; then
  1291.     echo You have unpacked all 6 archives.
  1292.     rm -f ark[1-9]isdone
  1293. else
  1294.     echo You still need to unpack the following archives:
  1295.     echo "        " ${MISSING}
  1296. fi
  1297. ##  End of shell archive.
  1298. exit 0
  1299.